package py.una.pol.ii.is2.domain.registro;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *  Clase que mapea la entidad Chofer.
 *  @author lizj
 *  @date 10/05/2009
 */
@Entity
@Table(name = "chofer")
@NamedQueries({@NamedQuery(name = "Chofer.findAll", query = "SELECT c FROM Chofer c"), @NamedQuery(name = "Chofer.findByChofCod", query = "SELECT c FROM Chofer c WHERE c.chofCod = :chofCod"), @NamedQuery(name = "Chofer.findByChofNombre", query = "SELECT c FROM Chofer c WHERE c.chofNombre = :chofNombre"), @NamedQuery(name = "Chofer.findByChofApellido", query = "SELECT c FROM Chofer c WHERE c.chofApellido = :chofApellido"), @NamedQuery(name = "Chofer.findByCofCedula", query = "SELECT c FROM Chofer c WHERE c.cofCedula = :cofCedula"), @NamedQuery(name = "Chofer.findByChofDireccion", query = "SELECT c FROM Chofer c WHERE c.chofDireccion = :chofDireccion"), @NamedQuery(name = "Chofer.findByChofFechaIngreso", query = "SELECT c FROM Chofer c WHERE c.chofFechaIngreso = :chofFechaIngreso"), @NamedQuery(name = "Chofer.findByChofRegistro", query = "SELECT c FROM Chofer c WHERE c.chofRegistro = :chofRegistro"), @NamedQuery(name = "Chofer.findByChofGrupoSanguineo", query = "SELECT c FROM Chofer c WHERE c.chofGrupoSanguineo = :chofGrupoSanguineo"), @NamedQuery(name = "Chofer.findByChofTelefono", query = "SELECT c FROM Chofer c WHERE c.chofTelefono = :chofTelefono"), @NamedQuery(name = "Chofer.findByChofCelular", query = "SELECT c FROM Chofer c WHERE c.chofCelular = :chofCelular"), @NamedQuery(name = "Chofer.findByChofClaseRegistro", query = "SELECT c FROM Chofer c WHERE c.chofClaseRegistro = :chofClaseRegistro")})
public class Chofer implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @SequenceGenerator(allocationSize=1, name="chofer_generator", sequenceName="chofer_chof_cod_seq")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="chofer_generator")
    @Basic(optional = false)
    @Column(name = "chof_cod")
    private Integer chofCod;
    @Basic(optional = false)
    @Column(name = "chof_nombre")
    private String chofNombre;
    @Basic(optional = false)
    @Column(name = "chof_apellido")
    private String chofApellido;
    @Basic(optional = false)
    @Column(name = "cof_cedula")
    private String cofCedula;
    @Column(name = "chof_direccion")
    private String chofDireccion;
    @Column(name = "chof_fecha_ingreso")
    @Temporal(TemporalType.DATE)
    private Date chofFechaIngreso;
    @Basic(optional = false)
    @Column(name = "chof_registro")
    private String chofRegistro;
    @Column(name = "chof_grupo_sanguineo")
    private String chofGrupoSanguineo;
    @Column(name = "chof_telefono")
    private String chofTelefono;
    @Column(name = "chof_celular")
    private String chofCelular;
    @Column(name = "chof_clase_registro")
    private String chofClaseRegistro;
    @OneToMany(cascade = CascadeType.MERGE, mappedBy = "reutCodChofer")
    private Collection<RegistroUtilizacion> registroUtilizacionCollection;

     /**
     * Constructor por defecto
     */
    public Chofer() {
    }

    /**
     * Construye un objeto Chofer a partir del parámetro que recibe
     * @param chofCod Código del objeto
     */
    public Chofer(Integer chofCod) {
        this.chofCod = chofCod;
    }

    /**
     * Construye un objeto Chofer a partir de los parámetros que recibe
     * @param chofCod Código del Chofer
     * @param chofNombre Nombre del Chofer
     * @param chofApellido Apellido del Chofer
     * @param cofCedula Cedula de identidad
     * @param chofRegistro Número del registro del Chofer
     */
    public Chofer(Integer chofCod, String chofNombre, String chofApellido, String cofCedula, String chofRegistro) {
        this.chofCod = chofCod;
        this.chofNombre = chofNombre;
        this.chofApellido = chofApellido;
        this.cofCedula = cofCedula;
        this.chofRegistro = chofRegistro;
    }

    /**
     * Permite recuperar el código del chofer
     * @return código
     */
    public Integer getChofCod() {
        return chofCod;
    }

    public void setChofCod(Integer chofCod) {
        this.chofCod = chofCod;
    }

    /**
     * Permite recuperar el nombre del chofer
     * @return nombre
     */
    public String getChofNombre() {
        return chofNombre;
    }

    public void setChofNombre(String chofNombre) {
        this.chofNombre = chofNombre;
    }

    /**
     * Permite recuperar el apellido del chofer
     * @return apellido
     */
    public String getChofApellido() {
        return chofApellido;
    }

    public void setChofApellido(String chofApellido) {
        this.chofApellido = chofApellido;
    }

    /**
     * Permite recuperar el documento de identidad del chofer
     * @return cédula
     */
    public String getCofCedula() {
        return cofCedula;
    }

    public void setCofCedula(String cofCedula) {
        this.cofCedula = cofCedula;
    }

    /**
     * Permite recuperar la dirección del chofer
     * @return direccion
     */
    public String getChofDireccion() {
        return chofDireccion;
    }

    public void setChofDireccion(String chofDireccion) {
        this.chofDireccion = chofDireccion;
    }

    /**
     * Permite recuperar la fecha de ingreso del chofer
     * @return direccion
     */
    public Date getChofFechaIngreso() {
        return chofFechaIngreso;
    }

    public void setChofFechaIngreso(Date chofFechaIngreso) {
        this.chofFechaIngreso = chofFechaIngreso;
    }

    public String getChofRegistro() {
        return chofRegistro;
    }

    public void setChofRegistro(String chofRegistro) {
        this.chofRegistro = chofRegistro;
    }

    public String getChofGrupoSanguineo() {
        return chofGrupoSanguineo;
    }

    public void setChofGrupoSanguineo(String chofGrupoSanguineo) {
        this.chofGrupoSanguineo = chofGrupoSanguineo;
    }

    public String getChofTelefono() {
        return chofTelefono;
    }

    public void setChofTelefono(String chofTelefono) {
        this.chofTelefono = chofTelefono;
    }

    public String getChofCelular() {
        return chofCelular;
    }

    public void setChofCelular(String chofCelular) {
        this.chofCelular = chofCelular;
    }

    public String getChofClaseRegistro() {
        return chofClaseRegistro;
    }

    public void setChofClaseRegistro(String chofClaseRegistro) {
        this.chofClaseRegistro = chofClaseRegistro;
    }

    public Collection<RegistroUtilizacion> getRegistroUtilizacionCollection() {
        return registroUtilizacionCollection;
    }

    public void setRegistroUtilizacionCollection(Collection<RegistroUtilizacion> registroUtilizacionCollection) {
        this.registroUtilizacionCollection = registroUtilizacionCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (chofCod != null ? chofCod.hashCode() : 0);
        return hash;
    }

     /**
     * Compara si el elemento recibido como parámetro es igual al elemento actual
     * @param object segundo elemento de comparación
     * @return true si los elementos son iguales, en otro caso false
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Chofer)) {
            return false;
        }
        Chofer other = (Chofer) object;
        if ((this.chofCod == null && other.chofCod != null) || (this.chofCod != null && !this.chofCod.equals(other.chofCod))) {
            return false;
        }
        return true;
    }

    /**
     * Permite mostrar en la salida estándar
     * @return String conteniendo el código del chofer
     */
    @Override
    public String toString() {
        return "py.una.pol.ii.is2.dao.flota.Chofer[chofCod=" + chofCod + "]";
    }

}
